#pragma once 
#include <iostream>
#include <pthread.h>


// 一个类似于智能指针的东西


class Mutex 
{
private:
  
    pthread_mutex_t* _pmtx;

public:
    Mutex(pthread_mutex_t  *mtx)
        :_pmtx(mtx)
    {

    }

    void lock()
    {
        pthread_mutex_lock(_pmtx);
    }

    void unlock()
    {
        pthread_mutex_unlock(_pmtx);
    }

    ~Mutex()
    {

    }
    
};



// 为什么不直接把pthread_mutex_lock(_pmtx); pthread_mutex_unlock(_pmtx); 放到一个类中 ？
class lockGuard
{
private:

    Mutex _mtx;

public: 

    lockGuard(pthread_mutex_t *mtx)
        :_mtx(mtx)
    {
        _mtx.lock();
    }

    ~lockGuard()
    {
        _mtx.unlock();
    }

};